The present invention relates to remote installation of computer software and, in particular, to a mechanism for automatically, accurately, and remotely installing and updating computer software distributed over a computer network.
The Internet is just the latest of a growing number of large computer networks in which a number of server computer systems provide services to countless client computer systems. Each of the server computer systems require maintenance as new software is made available or existing software is upgraded.
Such maintenance typically involves a human computer engineer accessing each server individually and customizing software for each server. Requiring human access to each individual server effectively limits the number of servers that can be maintained and represents a relatively high cost for such maintenance.
What is needed is a mechanism by which software installation and maintenance to various servers of a computer network can be more automated and, as a result, more error-free. Such a system would significantly reduce the cost in providing large numbers of such servers.
In accordance with the present invention, a human engineer using a computer system can maintain numerous software services and packages installed on a number of servers through a single master server and a computer network. Each software service and package is represented in a package and service template datastore in a templatized form in which server-specific information is represented by placeholder data. To install a service or package on a destination server computer, data specific to the destination server is substituted for the corresponding placeholder data in program modules, configuration data files, and installation scripts and the program modules, configuration data files, and installation scripts are transported to the destination server where the installation scripts are executed.
Execution of the installation scripts copies program modules and configuration data files to locations specified in the installation scripts and can also create symbolic links which make the program modules available and accessible to clients of the service represented by the program modules, configuration data files, and installation scripts. Within the destination server, such program files and configuration data files are stored in such a manner that multiple versions of the same software package can simultaneously execute within the destination server.
In particular, version-independent data is separated from version-dependent data. A given software package includes a first directory which is version-independent and additional, separate directories for each version of the software package installed on the destination server computer. Data which is version-independent, i.e., which is applicable to more than one version of the package, is stored in the version-independent directory. Data which is version-dependent, i.e., which is specific to a particular version of the package, is stored in the version-dependent directory for the particular version of the package to which the data pertains.
All versions of a particular package retrieve version-independent data from the version-independent directory. Accordingly, aspects of the package which are to remain constant across various versions are specified in a single location and therefore do remain constant. Each version of a particular package retrieves version-dependent data from the version-dependent directory for that version. As a result, multiple versions of the package execute properly and simultaneously.
Multiple, simultaneous versions of a software package provide a significant benefit. The following example is illustrative. Consider that a collection of software providing a first service to client computers has been present on a server computer for some time and relies on a particular version of a software package to faithfully and reliably provide the first service. Consider further that a new collection of software which provides a new, second service to client computers and requires a newer version of the same software package is to be installed on the server computer system. Installation of the newer version of the package may cause the first service to no longer function properly, requiring modification of the first collection of software and adaptation to the newer version of the package. Such represents a significant amount of effort and expense.
However, in accordance with the present invention, both versions of the package can be available on the server computer simultaneously such that the first service continues to be provided reliably and without change while the new, second service can be added to thereby more fully utilize the computing resources of the server computer. The present invention therefore represents a significant improvement over prior art systems.